#include "CaminoMinimoSimple.h"
#include <stdlib.h>


CaminoMinimoSimple::CaminoMinimoSimple(Escenario* escenario) {
	this->escenario = escenario;
}
list<Casilla*> CaminoMinimoSimple::getCaminoMinimo(Casilla* inicial, Casilla* final) {
	int distX = final->getX() - inicial->getX();
	int distY = final->getY() - inicial->getY();

	int pasoX;
	int pasoY;

	(distX >= 0) ? pasoX = 1: pasoX = -1;
	(distY >= 0) ? pasoY = 1: pasoY = -1;

	Casilla* actual = inicial;

	list<Casilla*> caminoMinimo;

	while (actual->getX() != final->getX() && actual->getY() != final->getY()){
		actual = escenario->getCasilla(actual->getX()+pasoX,actual->getY()+pasoY);
		caminoMinimo.push_back(actual);
	}

	pasoX=0;
	pasoY=0;

	if (actual->getX() == final->getX()){
		(final->getY() - actual->getY() > 0) ? pasoY = 1: pasoY = -1;

		while (actual->getY() != final->getY()){
			actual = escenario->getCasilla(actual->getX()+pasoX,actual->getY()+pasoY);
			caminoMinimo.push_back(actual);
		}
	}
	else {
		(final->getX() - actual->getX() > 0) ? pasoX = 1: pasoX = -1;
		while (actual->getX() != final->getX()){
			actual = escenario->getCasilla(actual->getX()+pasoX,actual->getY()+pasoY);
			caminoMinimo.push_back(actual);
		}
	}



	return caminoMinimo;
}
